home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / apps / 102 / examples / textalgn.c < prev    next >
C/C++ Source or Header  |  1987-01-25  |  5KB  |  128 lines

  1. /* Programmer's guide to GEM - 1986 - p.158 -listing 3.2 - CJPurcell Dec'86  */
  2. /* CTRLRC.C  -  MAIN DRIVER for draw_rc()  examples  using Mark Williams C   */
  3. /* to be tested in NDC and/or RC mode with or without GDOS for implications  */
  4. #include <portab.h>                       /* try <> and see ?? */
  5. #include <osbind.h>                       /* system constants  */
  6. #include <gemdefs.h>                      /* GEM-definition    */
  7. /* #include <obdefs.h>                    / * object definition*/
  8.  
  9. WORD contrl[12], intin[128], ptsin[128], intout[128], ptsout[128];
  10.  
  11. #define M_OFF 256
  12. #define RC_COORDS 2
  13. #define RIGHT_ALIGNED 2
  14. #define BOTTOM_ALIGNED 3
  15.  
  16. VOID main()                /* not GEMAIN as in ref. */
  17. {
  18.         WORD handle, work_in[11], work_out[57], max_w, max_h;
  19.         WORD ii;
  20.  
  21.         appl_init();                                    /* init AES for call */
  22.         handle = graf_handle( &ii,&ii,&ii,&ii );        /* get screen handle */
  23.         graf_mouse( M_OFF, NULL );                      /* hide mouse        */
  24.         v_clrwk( handle );                              /* clear workstation */
  25.  
  26.         for( ii=0; ii<11; ++ii ) work_in[ii]=1;         /* init work_in array*/
  27.         work_in[10] = RC_COORDS;                     /* using RC coordinates */
  28.         v_opnvwk( work_in, &handle, work_out );      /* open the workstation */
  29.  
  30.         max_w = work_out[0]; max_h = work_out[1];
  31.         draw_rc( handle,0,0,max_w,max_h );           /* do the examp.routine */
  32.  
  33.         vst_alignment( handle,RIGHT_ALIGNED,BOTTOM_ALIGNED,&ii,&ii );
  34.         v_gtext( handle,max_w,max_h,"Press any Key to Continue" );
  35.         evnt_keybd();                                   /* pause for viewing */
  36.         v_clsvwk( handle );                             /* close workstation */
  37.         appl_exit();                                    /* tell AES finished */
  38. }
  39.  
  40. /* Programmer's Guide to GEM - 1986 - p.199,Listing 3.13 - CJPurcell- Dec'86 */
  41. /* TEXTALGN.C   -   Display Text Alignment example Effects on GEM-GDOS   -   */
  42. /*  #include <portab.h>   */
  43.  
  44. BYTE *x_labels[3] = { " 0:left "," 1:center "," 2:right " };
  45. BYTE *y_labels[6] = { " 0:baseline "," 1:half line "," 2:ascent line ",
  46.                       " 3:bottom ",  " 4:descent ",  " 5:top " };
  47.  
  48. #define LEFT    0
  49. #define CENTER  1
  50. #define HALF    1
  51. #define TOP     5
  52.  
  53. #define PATTERN 2
  54. #define LIGHT_DITHER_PATTERN 1
  55. #define BLACK   1
  56.  
  57. #define BIG_LETTERS         36
  58. #define COLOR_LETTERS       18
  59. #define SMALL_LETTERS       10
  60.  
  61.  
  62. VOID draw_rc( handle, dx, dy, swidth, sheight )
  63.         WORD handle, dx, dy, swidth, sheight;
  64. {
  65.         WORD pxy[4], junk, cur_x, cur_y, incr_x, incr_y, start_x, resize;
  66.         WORD hor_in, ver_in;
  67.         WORD y_lines[6];                        /* table of row positions   */
  68.  
  69.         resize = COLOR_LETTERS ;                /* presume color system, but*/
  70.         if ( 2 == Getrez() ) resize = BIG_LETTERS ;
  71.  
  72.  
  73.         /* set screen to background dither pattern to highlight text */
  74.         pxy[0] = dx ;
  75.         pxy[1] = dy ;
  76.         pxy[2] = dx + swidth ;
  77.         pxy[3] = dy + sheight ;
  78.  
  79.         vsf_interior( handle, PATTERN );
  80.         vsf_style   ( handle, LIGHT_DITHER_PATTERN );
  81.         vsf_color   ( handle, BLACK   );
  82.         v_bar( handle, pxy );
  83.  
  84.         incr_x  =     swidth  / 3 ;
  85.         start_x = dx + ( 2* incr_x) / 3 ;
  86.         incr_y  =     sheight / 7 ;
  87.  
  88.         /* set up row positions to make row display more pleasing */
  89.         for(cur_y=dy+incr_y, ver_in = 0; ver_in < 6; ++ver_in, cur_y += incr_y)
  90.         y_lines[ver_in] = cur_y;
  91.         y_lines[1] -= incr_y / 3 ;        /* move these up to make some room */
  92.         y_lines[2] -= incr_y / 3 ;
  93.         y_lines[3] += incr_y / 2 ;        /*  and move these down            */
  94.         y_lines[4] += incr_y / 2 ;
  95.  
  96.         /* display text in different alignments                              */
  97.         vst_point( handle, resize,  &junk, &junk, &junk, &junk );
  98.         for(cur_x=dx+start_x,hor_in = 0; hor_in < 3; ++hor_in, cur_x += incr_x)
  99.             for( ver_in = 0 ; ver_in < 6 ; ++ver_in )
  100.             {
  101.                 vst_alignment( handle, hor_in, ver_in, &junk, &junk );
  102.                 v_gtext( handle, cur_x , y_lines[ver_in], " ALIGN " );
  103.             }
  104.         /* draw alignment grid and label everything                          */
  105.         vst_point( handle,SMALL_LETTERS, &junk, &junk, &junk, &junk );
  106.  
  107.         /* draw and label vertical alignment lines                           */
  108.         vst_alignment( handle, CENTER , TOP , &junk, &junk );
  109.         for(cur_x=dx+start_x,hor_in = 0; hor_in < 3; ++hor_in, cur_x += incr_x)
  110.         {
  111.             pxy[0] = pxy[2] = cur_x ;
  112.             pxy[1] = dy ;
  113.             pxy[3] = dy + sheight ;
  114.             v_pline( handle, 2, pxy );
  115.             v_gtext( handle, cur_x, dy, x_labels[hor_in] ); /* label columns */
  116.         }
  117.         /* draw and label horizontal alignment lines                         */
  118.         vst_alignment( handle, LEFT , HALF , &junk, &junk );
  119.         for( ver_in = 0 ; ver_in < 6 ; ++ver_in )
  120.         {
  121.             pxy[1] = pxy[3] = y_lines[ver_in];
  122.             pxy[0] = dx ;
  123.             pxy[2] = dx + swidth ;
  124.             v_pline( handle, 2, pxy );
  125.             v_gtext(handle,dx,y_lines[ver_in], y_labels[ver_in]);/*label rows*/
  126.          }
  127. }                                          /*      CJPurcell 17Jan'87  */
  128.